/**
 * 用户--权限--动态路由 缓存数据
 * 刷新  保留 token  目前做 session 持久化
 */

import { login } from '@/api/login'
import { queryPermissionsByUser } from '@/api/user'
import { defineStore } from 'pinia'
import { reactive } from 'vue'

const welcome = () => {
	const arr = [
		'休息一会儿吧',
		'准备吃什么呢?',
		'要不要打一把 游戏',
		'我猜你可能累了',
	]
	let index = Math.floor(Math.random() * arr.length)
	return arr[index]
}

export const useUser = defineStore(
	'user',
	() => {
		// 用户信息
		const user = reactive({
			token: '', // 持久化 session
			username: '',
			realname: '',
			tenantid: '1',
			welcome: '',
			avatar: '',
			permissionList: [], // 权限列表 左侧菜单 --刷新 routers 就没有了 所以这里不持久化 与路由保持同步
			info: {},
			// 系统安全模式
			sysSafeMode: null,
		})

		// 登陆
		const Login = async userInfo => {
			const { code, result } = await login(userInfo).catch(e =>
				Promise.reject(e)
			)
			if (code !== 200) return Promise.reject('网络异常')
			const { token } = result
			const { username, realname, avatar } = result.userInfo
			user.token = token
			user.info = userInfo
			user.username = username
			user.realname = realname
			user.avatar = avatar
			user.welcome = welcome()
			return result
		}
		// 获取用户信息
		const GetPermissionList = async () => {
			const { result } = await queryPermissionsByUser()
			// 设置 permissionList
			const { menu: menuData } = result
			if (menuData && menuData.length > 0) {
				user.permissionList = menuData
			}
			return menuData
		}

		// 返回
		return { user, Login, GetPermissionList }
	},
	{
		persist: {
			key: 'user',
			storage: window.sessionStorage,
			paths: ['user.token'],
		},
	}
)
